<?php
/*
 * * * * * * * * * * LICENCIA * * * * * * * * * * * * * * * * * * * * *

Copyright(C) 2012
pensum Universtiario de Tecnología Dr. Federico Rivero Palacio

Este programa es Software Libre y usted puede redistribuirlo y/o modificarlo
bajo los términos de la versión 3.0 de la Licencia Pública General (GPLv3)
publicada por la Free Software Foundation (FSF), es distribuido sin ninguna
garantía. Usted debe haber recibido una copia de la GPLv3 junto con este
programa, sino, puede encontrarlo en la página web de la FSF, 
específicamente en la dirección http://www.gnu.org/licenses/gpl-3.0.html

 * * * * * * * * * * ARCHIVO * * * * * * * * * * * * * * * * * * * * *

Nombre: pensumControlador.clase.php
Diseñador: Miguel Terrami
Programador: Miguel Terrami
Fecha: 
Descripción:  
	Este es el controlador del módulo pensum, permite manejar las 
	operaciones relacionadas con los pensums (agregar, modificar,
	eliminar, consultar, buscar), es el intermediario entre la base de
	datos y la vista. 
	
	En el constructor se establecen las configuraciones iniciales y en 
	la función manejarRequerimiento se maneja la accion a emprender, 
	obteniéndola del arreglo Post/Get en la posición 'accion'


 * * * * * * * * Cambios/Mejoras/Correcciones/Revisiones * * * * * * * *
Diseñador - Programador /   Fecha   / Descripción del cambio
   Jhonny Vielma    ---- 22/11/2013-- Cambio a mvc Actualizado

 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*/

//Objeto pensum
require_once "negocio/Pensum.clase.php";
require_once "negocio/Trayecto.clase.php";
require_once"negocio/UniCurricular.clase.php";

//Clase que permite la comunicación con la base de datos
require_once "modulos/pensum/modelo/PensumServicio.clase.php";
require_once "modulos/pensum/modelo/TrayectoServicio.clase.php";
require_once "modulos/pensum/modelo/UnidadCurricularServicio.clase.php";

class PensumControlador {
	
	/* Funcion que le da inicio al modulo pensum llama a la funcion configurar
	 * y manejar requerimiento.
	 */
	
	public static function iniciar(){
		self::configurar();
		self::manejarRequerimiento();
	}
	
	private static function configurar(){
		global $gbVista;
		//permite colocar el tipo de vista que se está manejando en la 
		//petición
		
		if ($gbVista->obtenerFormato() == "html5"){
			if (PostGet::ObtenerPostGet('m_accion') == 'listar')
				$gbVista->agregarJavascript("modulos/pensum/vista/html5/JavaScript/PensumListarConfigurar.js");
			elseif (PostGet::ObtenerPostGet('m_accion') == 'administrar')
				$gbVista->agregarJavascript("modulos/pensum/vista/html5/JavaScript/PensumAdministrarConfigurar.js");

			$gbVista->agregarJavascript("modulos/pensum/vista/html5/JavaScript/Pensum.js");
			$gbVista->agregarJavascript("modulos/pensum/vista/html5/JavaScript/Trayecto.js");
			$gbVista->agregarJavascript("modulos/pensum/vista/html5/JavaScript/UnidadCurricular.js");
			$gbVista->agregarCSS ("modulos/pensum/vista/html5/css/bio.css");
		}			
	}
	
	
	/*Método que permite manejar el requerimiento (o acción) indicado por
	 * el usuario según su petición
	 * resumen de acciones:
	 * -----------------PENSUM---------------------------------
	 *  listar: Muestra una lista de pensums.
		mostrar: Muestra toda la información de un solo pensum.
		preagregar: Muestra el formulario para agregar un pensum.
		agregar: Recibe los datos de un pensum llenados en el formulario
		         llamado por 'preagregar' e intenta agregar el pensum
		         en la base de datos.
		premodificar: Carga en un formulario los datos de un pensum a
		              ser modificado.
		modificar: envía al servidor los datos ya modificados de un 
		           pensum en intenga hacer el cambio en la base de datos.
		eliminar: Intenta eliminar un pensum de la base de datos.
	
	** -----------------TRAYECTO--------------------------------- 
		listarT: Muestra una lista de trayecto.
		mostrarT: Muestra toda la información de un solo trayecto.
		preagregarT: Muestra el formulario para agregar un trayecto.
		agregarT: Recibe los datos de un trayecto llenados en el formulario
		          llamado por 'preagregarT' e intenta agregar el trayecto
		          en la base de datos.
		premodificarT: Carga en un formulario los datos de un trayecto a
		               ser modificado.
		modificarT: Envía al servidor los datos ya modificados de un 
					trayecto en intenga hacer el cambio en la base de datos.
		eliminar: Intenta eliminar un trayecto de la base de datos
	** -----------------Unidades Curriculares--------------------------------- 
		listarUC: Muestra una lista de unidades curriculares.
		mostrarUC: Muestra toda la información de una sola unidad curricular.
		preagregarUC: Muestra el formulario para agregar una unidad curricular.
		agregarUC: Recibe los datos de un trayecto llenados en el formulario
		           llamado por 'preagregarUC' e intenta agregar la unidad curricular
		           en la base de datos.
		premodificarUC: Carga en un formulario los datos de un trayecto a
		               ser modificado.
		modificarUC: Envía al servidor los datos ya modificados de una 
					 unidad Curricular en intenga hacer el cambio en la base de datos.
		eliminarUC: Intenta eliminar un trayecto de la base de datos
					Cada acción será redireccionada a un método que la procesa para 
					mayor orden. 
		
	 */
	public static function manejarRequerimiento(){
		
		//permite obtener la acción a realizar en este módulo
		$accion = PostGet::obtenerPostGet('m_accion');

		/* Permite colocar una acción predefinida en caso de no colocarla
		 * manda error de accion no identificada. 
		*/
		
		//Acciones de pensum
		if ( ! $accion) $accion = 'listar';
			
		if ($accion == 'administrar') 		self::administrarPensum();			
		elseif ($accion == 'listar')		self::listarPensum();	
		elseif ($accion == 'mostrar')		self::mostrarPensum();					
		elseif ($accion == 'preagregar') 	self::preagregarPensum();			
		elseif ($accion == 'agregar') 		self::agregarPensum();		
		elseif ($accion == 'premodificar') 	self::premodificarPensum();	
		elseif ($accion == 'modificar') 	self::modificarPensum();
		elseif ($accion == 'eliminar') 		self::eliminarPensum();
		
		//Aciones de trayecto
		elseif ($accion == 'mostrarT')		self::mostrarTrayecto();
		elseif ($accion == 'listarT')		self::listarTrayecto();					
		elseif ($accion == 'preagregarT') 	self::preagregarTrayecto();		
		elseif ($accion == 'agregarT') 		self::agregarTrayecto();		
		elseif ($accion == 'premodificarT') self::premodificarTrayecto();	
		elseif ($accion == 'modificarT') 	self::modificarTrayecto();
		elseif ($accion == 'eliminarT')		self::eliminarTrayecto();
		
		//Acciones de Unidades curriculares
		elseif ($accion == 'mostrarUC') 	self::mostrarUniCurricular();
		elseif ($accion == 'listarUC')		self::listarUniCurricular();					
		elseif ($accion == 'preagregarUC') 	self::preagregarUniCurricular();			
		elseif ($accion == 'agregarUC') 	self::agregarUniCurricular();		
		elseif ($accion == 'premodificarUC')self::premodificarUniCurricular();	
		elseif ($accion == 'modificarUC') 	self::modificarUniCurricular();
		elseif ($accion == 'eliminarUC') 	self::eliminarUniCurricular(); 
		else
			die("Acci&oacute;n inv&aacute;lida en el m&oacute;dulo pensum: $accion");
	}
	
	
	/* Método que permite mostrar el formulario para agregar una unidad curricular.
		Parámetros de entrada:
			Ninguno.
		Valores de salida:
			Ninguno.*/
	private static function preagregarUniCurricular() {
		global $gbVista;
		/* Obtiene el codigo de trayecto y de pensum mediante la funcion postget,
		   para mayor informacion leer la documentacion de postget.
		*/
		$codTrayecto = PostGet::obtenerPostGet('codigo');
		$codPensum = PostGet::obtenerPostGet('codPensum');
		
		/*le asigna la información necesaria para manejar en la vista, en
		  este caso la accion (preagregarUniCurricular) y un arreglo con un objeto
		   vacío
		*/
		$gbVista->asignarDato('accion',PostGet::obtenerPostGet('m_accion'));
		$gbVista->asignarDato('uniCurriculares',array(new UniCurricular()));
		$gbVista->asignarDato('codTrayecto',$codTrayecto);
		$gbVista->asignarDato('codPensum',$codPensum);
		
		/*Se asigna la dirección del archivo que mostrará la información
		  de la vista */
		$gbVista->asignarVista("uniCurricularAgregarModificar");
		
		//Muestra la vista por pantalla
		$gbVista->mostrar();
	}
	
	
	/* Método que permite mostrar el formulario para agregar un Pensum.
		Parámetros de entrada:
			Ninguno.
		Valores de salida:
			Ninguno.*/
	private static function preagregarPensum() {
		global $gbVista;
		
		/*le asigna la información necesaria para manejar en la vista, en
		  este caso la accion (preagregar) y un arreglo con un objeto
		  pensum vacío
		*/
		$gbVista->asignarDato('accion',PostGet::obtenerPostGet('m_accion'));
		$gbVista->asignarDato('pensums',new pensum());
		
		/*Se asigna la dirección del archivo que mostrará la información
		  de la vista */
		$gbVista->asignarVista("pensumAgregarModificar");
		
		//Muestra la vista por pantalla
		$gbVista->mostrar();
		
	}
	
	/* Método que permite mostrar el formulario para agregar un Trayecto.
		Parámetros de entrada:
			Ninguno.
		Valores de salida:
			Ninguno. */
	private static function preagregarTrayecto() {
		global $gbVista;
		
		$codPensum = PostGet::obtenerPostGet('codigo');
		
		/*le asigna la información necesaria para manejar en la vista, en
		  este caso la accion (preagregarTrayecto) y un arreglo con un objeto
		  trayecto vacío
		*/
		$gbVista->asignarDato('accion',PostGet::obtenerPostGet('m_accion'));
		$gbVista->asignarDato('codPensum',$codPensum);
		$gbVista->asignarDato('trayectos',array(new trayecto()));
		$gbVista->asignarDato('numTrayecto',(PostGet::obtenerPostGet('numTrayecto')));
		/*Se asigna la dirección del archivo que mostrará la información
		  de la vista */
		$gbVista->asignarVista("trayectoAgregarModificar");
		
		//Muestra la vista por pantalla
		$gbVista->mostrar();
		
	}
 
	/* Método que permite agregar un pensum, recibe los parámetros desde la vista (arreglo 
	   PostGet) y llama a pensum servicio que permite comunicarse con la base de datos y este
	   último retorna el resultado ya sea éxito o fracaso, y con este resultado se le envía la
	   respuesta al usuario.
		Parámetros de entrada:
			Ninguno:
		Valores de salida:
			Ninguno.
	*/
	public static function agregarPensum() {
		global $gbVista;
		$codTrayecto = PostGet::obtenerPostGet('codTrayecto');
		
		//construir el objeto pensum sin el código ya que la base de datos
		//lo asigna automáticamente 
		$pensum = new Pensum();		
		$pensum->asignarNombre(PostGet::obtenerPostGet('nombre'));
		$pensum->asignarNombreCorto(PostGet::obtenerPostGet('nombreCorto'));
		$pensum->asignarObservaciones(PostGet::obtenerPostGet('observaciones'));

		/*llamado al servicio para agregar pensum, se le pasa como parámetro
		el objeto pensum a insertar. retorna true en caso de éxito y false
		si ocurre algún error
		*/
		$respuesta = PensumServicio::agregarPensum($pensum);
		$gbVista->asignarDato('codTrayecto', $codTrayecto);
		$gbVista->asignarDato('accion',PostGet::obtenerPostGet('m_accion'));
		if (PostGet::obtenerPostGet('m_formato') == "html5"){
			if ($respuesta != false) { //caso de éxito en la agregación
				//asigna como información un pensum vacío para mostrar de nuevo 
				//el formulario en blanco
				$gbVista->asignarDato('pensums',new pensum());
				//asigna el mensaje a mostrar
				$gbVista->asignarDato('mensaje','pensums ' . $pensum->obtenerNombreCorto() . ' agregado con éxito');
				$gbVista->asignarDato('titulo','Pensum');
			}else{  //en caso de error
				//asigna el mismo pensum como información para que permanezca
				//la información en pantalla
				$gbVista->asignarDato('pensums', array($pensum) );
				//asigna el mensaje a mostrar según el error
				$gbVista->asignarDato('mensaje','No se pudo agregar el pensum');
				$gbVista->asignarDato('titulo','Pensum');
				//asigna la vista que muestra la información
				$gbVista->asignarVista("pensumMensaje");
				//instruye a que se muestre la vista
				
			}
		}else 	if (PostGet::obtenerPostGet('m_formato') == "json"){
					if ( $respuesta === false) 
						$exito = false;
					else 
						$exito=true;
				$gbVista->asignarDato("ress",$respuesta);
				$gbVista->asignarDato('exito',$exito);
				}else echo "formato incorrecta";
		
		$gbVista->mostrar();
	}
	
   /*	Método que permite agregar un trayecto, recibe los parámetros desde la vista 
        (arreglo PostGet) y llama a trayecto servicio que permite comunicarse con la 
        base de datos y este último retorna el resultado ya sea éxito o fracaso, y con
        este resultado se le envía la respuesta al usuario.
		Parámetros de entrada:
			Ninguno:
		Valores de salida:
			Ninguno.
	*/
   private static function agregarTrayecto() {
		global $gbVista;
			
		//construir el objeto pensum sin el código ya que la base de datos
		//lo asigna automáticamente 
		$trayecto = new trayecto();
		$trayecto->asignarCodPensum(PostGet::obtenerPostGet('codigo'));
		$trayecto->asignarNumero(PostGet::obtenerPostGet('numTrayecto'));
		$trayecto->asignarCertificado(PostGet::obtenerPostGet('certificado'));
		$trayecto->asignarMinCredito(PostGet::obtenerPostGet('minCredito'));
		
		/*llamado al servicio para agregar pensum, se le pasa como parámetro
		el objeto pensum a insertar. retorna true en caso de éxito y false
		si ocurre algún error
		*/
		$respuesta = TrayectoServicio::agregarTrayecto($trayecto);
		
		if (PostGet::obtenerPostGet('m_formato') == "html5"){
			$gbVista->asignarDato('codPensum',(PostGet::obtenerPostGet('codigo')));
			$gbVista->asignarDato('numTrayecto',(PostGet::obtenerPostGet('numTrayecto')));
		
			$gbVista->asignarDato('accion',PostGet::obtenerPostGet('m_accion'));
		
			if ($respuesta != false) { //caso de éxito en la agregación
				//asigna como información un pensum vacío para mostrar de nuevo 
				//el formulario en blanco
				$gbVista->asignarDato('trayetos',array(new trayecto()));
				//asigna el mensaje a mostrar
				$gbVista->asignarDato('mensaje','trayectos ' . $trayecto->obtenerNumero() . ' agregado con éxito');
				$gbVista->asignarDato('titulo','Trayecto');
			}else{  //en caso de error
				//asigna el mismo pensum como información para que permanezca
				//la información en pantalla
				$gbVista->asignarDato('trayectos', array($trayecto) );
				//asigna el mensaje a mostrar según el error
				$gbVista->asignarDato('mensaje','No se pudo agregar el trayecto');
				$gbVista->asignarDato('titulo','Trayecto');
			}
		
			//instruye a que se muestre la vista
			$gbVista->mostrar();
		}else if (PostGet::obtenerPostGet('m_formato') == "json"){
				$gbVista->asignarVista(PostGet::obtenerPostGet("m_vista"));
				if ( $respuesta === false) 
					$respuesta = 0;
				else 
					$respuesta=1;
			$gbVista->asignarDato("respuesta", $respuesta);
			$gbVista->mostrar();
			
			
		}else echo "formato incorrecta";
	
	}
	
	/*	Método que permite agregar una unidad curricular , recibe los parámetros desde la vista
		(arreglo PostGet) y llama a uni curricular servicio que permite comunicarse con la base 
		de datos y este último retorna el resultado ya sea éxito o fracaso, y con este resultado
	    se le envía la respuesta al usuario.
		Parámetros de entrada:
			Ninguno:
		Valores de salida:
			Ninguno.
	  
	*/
	
	public function agregarUniCurricular() {
		global $gbVista;
		
		$uniCurricular = new UniCurricular();
		$uniCurricular->asignarCodPensum(PostGet::obtenerPostGet('codPensum'));
		$uniCurricular->asignarCodTrayecto(PostGet::obtenerPostGet('codTrayecto'));
		$uniCurricular->asignarCodUnidad(PostGet::obtenerPostGet('codUniMinisterio'));
		$uniCurricular->asignarNombre(PostGet::obtenerPostGet('nombre'));
		$uniCurricular->asignarTipo(PostGet::obtenerPostGet('tipo'));
		$uniCurricular->asignarHti(PostGet::obtenerPostGet('hti'));
		$uniCurricular->asignarHta(PostGet::obtenerPostGet('hta'));
		$uniCurricular->asignarDurSemana(PostGet::obtenerPostGet('durSemanas'));
		$uniCurricular->asignarUniCredito(PostGet::obtenerPostGet('uniCredito'));
		$uniCurricular->asignarNotMinima(PostGet::obtenerPostGet('notMinima'));
		$uniCurricular->asignarNotMaxima(PostGet::obtenerPostGet('notMaxima'));

		try{
		$respuesta = UniCurricularServicio::agregarUniCurricular($uniCurricular);
		}catch(Exception $e){
			$respuesta = false;
		}
		if (PostGet::obtenerPostGet('m_formato') == "html5"){
		$gbVista->asignarDato('codPensum',PostGet::obtenerPostGet('codPensum'));
		$gbVista->asignarDato('codTrayecto',PostGet::obtenerPostGet('codTrayecto'));
		$gbVista->asignarDato('accion',PostGet::obtenerPostGet('m_accion'));
				
		if ($respuesta != false) { //caso de éxito en la agregación
			
			$gbVista->asignarDato('uniCurriculares',array(new UniCurricular()));
			//asigna el mensaje a mostrar
			$gbVista->asignarDato('mensaje','La Unidad Curricular ' . $uniCurricular->obtenerNombre() . 'ha agregado con éxito');
			$gbVista->asignarDato('titulo','Unidad Curricular');
		}else{  //en caso de error
			//asigna el mismo pensum como información para que permanezca
			//la información en pantalla
			$gbVista->asignarDato('uniCurriculares', array($uniCurricular) );
			//asigna el mensaje a mostrar según el error
			$gbVista->asignarDato('mensaje','No se pudo agregar la unidad Curricular');
			$gbVista->asignarDato('titulo','Unidad Curricular');
		}
		
		//asigna la vista que muestra la información
		$gbVista->asignarVista("pensumMensaje");
		//instruye a que se muestre la vista
		$gbVista->mostrar();
		}else if (PostGet::obtenerPostGet('m_formato') == "json"){
				//echo 'entro';
				$gbVista->asignarVista(PostGet::obtenerPostGet("m_vista"));
				if ( $respuesta === false) 
					$respuesta = 0;
				else 
					$respuesta=1;
			$gbVista->asignarDato("respuesta", $respuesta);
			$gbVista->mostrar();
			
			
		}else echo "formato incorrecta";
	} 
	

	/*	Método que permite extraer de la base de datos toda la información de  un pensum.
		Recibe los datos desde la vista (arreglo PostGet), específicamente el código del 
		pensum, lo busca en la base de datos, luego construye el objeto Pensum y lo manda
		a la vista correspondiente.
		Parámetros de entrada:
			Ninguno:
		Valores de salida:
			Ninguno.
	*/
	private static function administrarPensum(){
		//extraer el código del pensum
		global $gbVista;
		$codigo = PostGet::obtenerPostGet('codigo');
		$obtenerUC = "";

		//buscar el pensum en la base de datos, retorna false en caso
		//de error, de lo contrario retorna un arreglo con los pensums
		//en este caso un arreglo con sólo una posición
		$pensums = PensumServicio::obtenerPensumPorCodigo($codigo);
		$obtenerTrayecto = TrayectoServicio::obtenerTrayectoPorPensum($codigo);	
		if (($obtenerTrayecto != NULL)){
		
				for($i = 0 ; $i < count($obtenerTrayecto); $i++){
			
						$obtenerUC[$i] = uniCurricularServicio::obteneruniCurricularPorPensumT($codigo,$obtenerTrayecto[$i]->obtenerCodigo());
						if ($obtenerUC[$i]!= null) 
							$obtenerTrayecto[$i]->asignarUnidades($obtenerUC[$i]);
				}		
		}
		if ($obtenerTrayecto!= null) 
			$pensums->asignarTrayectos($obtenerTrayecto);

		$gbVista->asignarDato('obtenerUC', $obtenerUC);	
		$gbVista->asignarDato('pensums', $pensums);
		$gbVista->asignarDato('obtenerTrayecto', $obtenerTrayecto);
		$gbVista->mostrar();
				
	}
	
	
	private static function mostrarPensum(){
		//extraer el código del pensum
		global $gbVista;
		$codigo = PostGet::obtenerPostGet('codigo');

		//buscar el pensum en la base de datos, retorna false en caso
		//de error, de lo contrario retorna un arreglo con los pensums
		//en este caso un arreglo con sólo una posición
		$pensum = PensumServicio::obtenerPensumPorCodigo($codigo);	
		if (PostGet::obtenerPostGet('m_formato') == "html5")
			$gbVista->asignarDato('pensums', $pensum);
		else
			if (PostGet::obtenerPostGet('m_formato') == "json")
				$gbVista->asignarDato('pensums', $pensum);
			if (PostGet::obtenerPostGet('m_formato') == "pdf")
				$gbVista->asignarDato('pensums', $pensum);
		
		$gbVista->mostrar();
				
	}
	
	/*	Método que permite extraer de la base de datos toda la información de  un Trayecto. 
		Recibe los datos desde la vista (arreglo PostGet), específicamente el código del trayecto,
		lo busca en la base de datos, luego construye el objeto Trayecto y lo manda a la vista 
		correspondiente.
		Parámetros de entrada:
			Ninguno:
		Valores de salida:
			Ninguno.
	*/
	
	private static function mostrarTrayecto(){
		//extraer el código del pensum
		global $gbVista;
		$codigo = PostGet::obtenerPostGet('codigo');

		//buscar el pensum en la base de datos, retorna false en caso
		//de error, de lo contrario retorna un arreglo con los pensums
		//en este caso un arreglo con sólo una posición
		$trayectos = TrayectoServicio::obtenerTrayectoPorCodigo($codigo);
		if (PostGet::obtenerPostGet('m_formato') == "html5"){
			$gbVista->asignarDato('codigo', $codigo);
			$gbVista->asignarDato('trayectos', $trayectos);
			$gbVista->asignarVista("trayectoMostrar");
			$gbVista->mostrar();
		}else if (PostGet::obtenerPostGet('m_formato') == "json"){
				$gbVista->asignarVista(PostGet::obtenerPostGet("m_vista"));
				if ( $trayectos !=  null) 
					$respuesta = 0;
				else 
					$respuesta=$trayectos;
			$gbVista->asignarDato("respuesta", $trayectos);
			$gbVista->mostrar();
			
			
		}else echo "formato incorrecta";
				
	}
	
	/*	Método que permite extraer de la base de datos toda la información de  una unidad 
	    curricular. Recibe los datos desde la vista (arreglo PostGet), específicamente el 
	    código de la unidad curricular, lo busca en la base de datos, luego construye el objeto
	    UniCurricular y lo manda a la vista correspondiente.
		Parámetros de entrada:
			Ninguno:
		Valores de salida:
			Ninguno.
	*/
	
	public function mostrarUniCurricular(){
		//extraer el código del pensum
		global $gbVista;
		
		$codTrayecto = PostGet::obtenerPostGet('codTrayecto');
		$codPensum = PostGet::obtenerPostGet('codPensum');
		$codigo = PostGet::obtenerPostGet('codigo');
		
		$uniCurriculares = UniCurricularServicio::obteneruniCurricularPorCodigo($codigo);
		if (PostGet::obtenerPostGet('m_formato') == "html5"){	
			$gbVista->asignarDato('codTrayecto',$codTrayecto);
			$gbVista->asignarDato('codPensum',$codPensum);
			$gbVista->asignarDato('uniCurriculares', $uniCurriculares);
			$gbVista->asignarVista("uniCurricularMostrar");
			$gbVista->mostrar();
		}else if (PostGet::obtenerPostGet('m_formato') == "json"){
			$gbVista->asignarVista(PostGet::obtenerPostGet("m_vista"));
				if ( $trayectos !=  null) 
					$respuesta = 0;
				else 
					$respuesta=$uniCurriculares;
			$gbVista->asignarDato("respuesta", $uniCurriculares);
			$gbVista->mostrar();
			}else echo "formato incorrecta";
	}
	
	

	/* 	Permite cargar en pantalla la información de un pensum para modificarlo, recibe 
		el código del pensum, lo busca en la base de datos y luego lo carga y muestra en 
		la vista correspondiente.
		Parámetros de entrada:
			Ninguno:
		Valores de salida:
			Ninguno.
	*/
	private static function premodificarPensum(){
		//obtiene el código del pensum
		global $gbVista;
		$codigo = PostGet::obtenerPostGet('codigo');
        
		$pensum = PensumServicio::obtenerPensumPorCodigo($codigo);
	
		//Si hubo error en la búsqueda llama a una página genérica para mostrar
		//errores
		if ($pensum === null) { //hubo error en la búsqueda
			$gbVista->asignarDato('titulo', 'Error');
			$gbVista->asignarDato('mensaje','pensum no encontrado, no se puede hacer la modificación');
			//$gbVista->asignarDireccionVista("Modulos/Pensum/Vista/pensumMensaje.php");

		// en caso de éxito carga la información en la vista correspondiente
		}else{ 
			$gbVista->asignarDato('pensums', $pensum);
			$gbVista->asignarDato('accion',PostGet::obtenerPostGet('m_accion'));
			$gbVista->asignarVista("pensumAgregarModificar");
		}
	
		//muestra la vista previamente configurada
		$gbVista->mostrar();
	}
	/*	Permite cargar en pantalla la información de un trayecto para modificarlo, recibe el
		código del trayecto, lo busca en la base de datos y luego lo carga y muestra en la vista
		correspondiente.
		Parámetros de entrada:
			Ninguno:
		Valores de salida:
			Ninguno.
	 */
	private static function  premodificarTrayecto(){
		//obtiene el código del pensum
		global $gbVista;
		$codigo = PostGet::obtenerPostGet('codigo');
		$codPensum = PostGet::obtenerPostGet('codPensum');
        
		$trayecto = TrayectoServicio::obtenerTrayectoPorCodigo($codigo);
	
		//Si hubo error en la búsqueda llama a una página genérica para mostrar
		//errores
		$gbVista->asignarDato('codPensum', $codPensum);
		
		if ($trayecto === null) { //hubo error en la búsqueda
			$gbVista->asignarDato('titulo', 'Error');
			$gbVista->asignarDato('mensaje','trayecto no encontrado, no se puede hacer la modificación');
			$gbVista->asignarVista("trayectoMensaje");

		// en caso de éxito carga la información en la vista correspondiente
		}else{ 
			$gbVista->asignarDato('trayectos', $trayecto);
			$gbVista->asignarDato('accion',PostGet::obtenerPostGet('m_accion'));
			$gbVista->asignarVista("trayectoAgregarModificar");
		}
	
		//muestra la vista previamente configurada
		$gbVista->mostrar();
	}
	
	/*	Permite cargar en pantalla la información de una unidad curricular para modificarlo, 
	  	recibe el código de la unidad curricular, lo busca en la base de datos y luego lo carga
		y muestra en la vista correspondiente.
		Parámetros de entrada:
			Ninguno:
		Valores de salida:
			Ninguno. 	
	*/
	
	public function premodificarUniCurricular(){
		//obtiene el código del pensum
		global $gbVista;
		$codTrayecto = PostGet::obtenerPostGet('codTrayecto');
		$codPensum = PostGet::obtenerPostGet('codPensum');
        $codigo = PostGet::obtenerPostGet('codigo');

		$uniCurricular = UniCurricularServicio::obteneruniCurricularPorCodigo($codigo);
		
		$gbVista->asignarDato('codTrayecto',$codTrayecto);
		$gbVista->asignarDato('codPensum',$codPensum);
		//Si hubo error en la búsqueda llama a una página genérica para mostrar
		//errores
		if ($uniCurricular === null) { //hubo error en la búsqueda
			$gbVista->asignarDato('titulo', 'Unidad Curricular');
			$gbVista->asignarDato('mensaje','Unidad Curricular no encontrado, no se puede hacer la modificación');
			$gbVista->asignarVista("pensumMensaje");

		// en caso de éxito carga la información en la vista correspondiente
		}else{ 
			$gbVista->asignarDato('uniCurriculares', $uniCurricular);
			$gbVista->asignarDato('accion',PostGet::obtenerPostGet('accion'));
			$gbVista->asignarVista("uniCurricularAgregarModificar");
		}
	
		//muestra la vista previamente configurada
		$gbVista->mostrar();
	}
	
	/*	Permite modificar un pensum ya existente, recibe los parámetros  por parte del usuario
		(desde la vista a través del arreglo PostGet) y hace los cambios en la base de datos 
		según la clave primaria de los pensums. 
		Parámetros de entrada:
			Ninguno:
		Valores de salida:
			Ninguno. 
	*/
	private static function modificarPensum() {
		global $gbVista;
		//localhost/mvcrivero4/index.php?m_modulo=pensum&m_accion=modificar&m_vista=pensumMostrar&m_formato=json&codigo=1&nombre=Programa Nacional de Formación Informática (Ingeniería)&nombreCorto=PNFIk&observaciones=jaja
		//construir el objeto pensum proveniente desde la vista
		$pensum = new pensum();
		$pensum->asignarCodigo(PostGet::obtenerPostGet('codigo'));
		$pensum->asignarNombre(PostGet::obtenerPostGet('nombre'));
		$pensum->asignarNombreCorto(PostGet::obtenerPostGet('nombreCorto'));
		$pensum->asignarObservaciones(PostGet::obtenerPostGet('observaciones'));
		$respuesta;

		try{
			$respuesta = PensumServicio::modificarPensum($pensum);
		}catch(Exception $e){
			$respuesta = false;
			echo $e;
		}
		echo $respuesta;
		if (PostGet::obtenerPostGet('m_formato') == "html5"){
			$gbVista->asignarDato('accion',PostGet::obtenerPostGet('m_accion'));
			$gbVista->asignarDato('titulo','Pensum');

			if ($respuesta === true) { //caso de exito
				$pensums = PensumServicio::obtenerPensumPorCodigo($pensum->obtenerCodigo());
				$gbVista->asignarDato('pensums',$pensums);
				$gbVista->asignarDato('mensaje','pensum modificado con éxito');
			}else{
				$gbVista->asignarDato('pensums', array($pensums) );
				$gbVista->asignarDato('mensaje','No se pudo modificar el pensum');
			}

			//asigna la vista encargada de mostrar la data
			$gbVista->asignarVista("pensumAgregarModificar");

			//muestra la vista
			$gbVista->mostrar();
		}else if (PostGet::obtenerPostGet('m_formato') == "json"){
			$gbVista->asignarVista(PostGet::obtenerPostGet("m_vista"));
			if ( $respuesta === false) 
					$respuesta = 0;
				else 
					$respuesta=1;
			
			
		}else echo "formato incorrecta";
	}
	
	/*	Permite modificar un trayecto ya existente, recibe los parámetros  por parte del 
		usuario (desde la vista a través del arreglo PostGet) y hace los cambios en la base
		de datos según la clave primaria de los trayectos. 
		Parámetros de entrada:
			Ninguno:
		Valores de salida:
			Ninguno. 	 
	*/
	
	private static function  modificarTrayecto() {
		global $gbVista;
		//var_dump($_POST);
		$trayecto = new trayecto();
		$trayecto->asignarCodPensum(PostGet::obtenerPostGet('codPensum'));
		$trayecto->asignarCodigo(PostGet::obtenerPostGet('codigo'));
		$trayecto->asignarNumero(PostGet::obtenerPostGet('numTrayecto'));
		$trayecto->asignarCertificado(PostGet::obtenerPostGet('certificado'));
		$trayecto->asignarMinCredito(PostGet::obtenerPostGet('minCredito'));
		try{
		$respuesta = TrayectoServicio::modificarTrayecto($trayecto);
		}catch(Exception $e){
			$respuesta = false;
		}
		$codPensum = PostGet::obtenerPostGet('codPensum');
		
		
		//procesar respuesta

		$gbVista->asignarDato('accion',PostGet::obtenerPostGet('m_accion'));
		$gbVista->asignarDato('codPensum', $codPensum);
		if (PostGet::obtenerPostGet('m_formato') == "html5"){
			if ($respuesta === true) { //caso de exito
				$trayectos = TrayectoServicio::obtenerTrayectoPorCodigo($trayecto->obtenerCodigo());
				$gbVista->asignarDato('trayecto',$trayectos);
				$gbVista->asignarDato('mensaje','Trayecto modificado con éxito');
				$gbVista->asignarDato('titulo', 'Trayecto');
			}else{
				$gbVista->asignarDato('trayecto', array($trayecto) );
				$gbVista->asignarDato('mensaje','No se pudo modificar el trayecto');
				$gbVista->asignarDato('titulo', 'Trayecto');
			}
			$gbVista->asignarVista("pensumMensaje");
			$gbVista->mostrar();
		}else if (PostGet::obtenerPostGet('m_formato') == "json"){
			
			$gbVista->asignarVista(PostGet::obtenerPostGet("m_vista"));
			$gbVista->asignarDato("respuesta", $respuesta);
			$gbVista->mostrar();
			
			
		}else echo "formato incorrecta";
		
	}

	/*	Permite modificar una unidad curricular ya existente, recibe los parámetros  por
		parte del usuario (desde la vista a través del arreglo PostGet) y hace los cambios
		en la base de datos según la clave primaria de las unidades curriculares. 
		Parámetros de entrada:
			Ninguno:
		Valores de salida:
			Ninguno. 	
	*/
	
	public static function modificarUniCurricular() {
		global $gbVista;
		
		$codTrayecto = PostGet::obtenerPostGet('codTrayecto');
		$codPensum = PostGet::obtenerPostGet('codPensum');

		//construir el objeto pensum proveniente desde la vista
		$uniCurricular = new UniCurricular();
		$uniCurricular->asignarCodigo(PostGet::obtenerPostGet('codigo'));
		$uniCurricular->asignarCodPensum(PostGet::obtenerPostGet('codPensum'));
		$uniCurricular->asignarCodTrayecto(PostGet::obtenerPostGet('codTrayecto'));
		$uniCurricular->asignarCodUnidad(PostGet::obtenerPostGet('codUniMinisterio'));
		$uniCurricular->asignarNombre(PostGet::obtenerPostGet('nombre'));
		$uniCurricular->asignarTipo(PostGet::obtenerPostGet('tipo'));
		$uniCurricular->asignarHti(PostGet::obtenerPostGet('hti'));
		$uniCurricular->asignarHta(PostGet::obtenerPostGet('hta'));
		$uniCurricular->asignarUniCredito(PostGet::obtenerPostGet('uniCredito'));
		$uniCurricular->asignarDurSemana(PostGet::obtenerPostGet('durSemanas'));
		$uniCurricular->asignarNotMinima(PostGet::obtenerPostGet('notMinima'));
		$uniCurricular->asignarNotMaxima(PostGet::obtenerPostGet('notMaxima'));
		$respuesta;
		try{
			$respuesta = UniCurricularServicio::modificaruniCurricular($uniCurricular);
		}catch(Exception $e){
			$respuesta = false;
		}
		//procesar respuesta
		$gbVista->asignarDato('codTrayecto',$codTrayecto);
		$gbVista->asignarDato('codPensum',$codPensum);
		
		$gbVista->asignarDato('accion',PostGet::obtenerPostGet('accion'));
		if (PostGet::obtenerPostGet('m_formato') == "html5"){
			if ($respuesta === true) { //caso de exito
				$uniCurriculares = UniCurricularServicio::obtenerUniCurricularPorCodigo($uniCurricular->obtenerCodigo());
				$gbVista->asignarDato('uniCurricular',$uniCurriculares);
				$gbVista->asignarDato('mensaje','unidad curricular modificado con éxito');
				$gbVista->asignarDato('titulo','Unidad Curricular');
			}else{
				$gbVista->asignarDato('uniCurricular', array($uniCurricular) );
				$gbVista->asignarDato('mensaje','No se pudo modificar el unidad curricular');
				$gbVista->asignarDato('titulo','Unidad Curricular');
			}

			//asigna la vista encargada de mostrar la data
			$gbVista->asignarVista("pensumMensaje");

			//muestra la vista
			$gbVista->mostrar();
		}else if (PostGet::obtenerPostGet('m_formato') == "json"){
			
			$gbVista->asignarVista(PostGet::obtenerPostGet("m_vista"));
			$gbVista->asignarDato("respuesta", $respuesta);
			$gbVista->mostrar();
			
			
		}else echo "formato incorrecta";
	}
	
	
	/*	Permite eliminar un pensum, recibe el código, ejecuta la acción correspondiente y 
		muestra un mensaje con el resultado de la operación, utiliza la pantalla genérica de
		mensajes para dar la respuesta.
		Parámetros de entrada:
			Ninguno:
		Valores de salida:
			Ninguno.
	*/
	private static function eliminarPensum() {
		global $gbVista;
		
		//Obtener el código del pensum a eliminar
		$codigo = PostGet::obtenerPostGet('codigo');
		$respuesta = PensumServicio::eliminarPensum($codigo);


		if (PostGet::obtenerPostGet('m_formato') == "html5"){

			//procesar respuesta
			$gbVista->asignarDato('titulo','Pensum');
			
			if ($respuesta == true)  //caso de exito
				$gbVista->asignarDato('mensaje','pensum eliminado con éxito');
				
			else
				$gbVista->asignarDato('mensaje','Error al eliminar el pensum');
				
			
			//asignar la vista para mostrar mensajes, y mostrarla
		}else if (PostGet::obtenerPostGet('m_formato') == "json"){
				$gbVista->asignarDato('respuesta', $respuesta);
			}else
				echo "FORMATO INVALIDO";

		$gbVista->mostrar();

	}
	/*	Permite eliminar un trayecto, recibe el código, ejecuta la acción correspondiente 
		y muestra un mensaje con el resultado de la operación, utiliza la pantalla genérica
		de mensajes para dar la respuesta.
		Parámetros de entrada:
			Ninguno:
		Valores de salida:
			Ninguno.
	*/
	private static function  eliminarTrayecto() {
		global $gbVista;
		
		//Obtener el código del pensum a eliminar
		$codigo = PostGet::obtenerPostGet('codigo');
		$codPensum = PostGet::obtenerPostGet('codPensum');
		
		$respuesta = TrayectoServicio::eliminarTrayecto($codigo);
		if (PostGet::obtenerPostGet('m_formato') == "html5"){
			$trayectos[0] = new Trayecto(0,$codPensum);
        
			//procesar respuesta
			$gbVista->asignarDato('titulo','Trayecto');
			$gbVista->asignarDato('trayectos',$trayectos);
			$gbVista->asignarDato('codPensum',$codPensum);
		
		
			if ($respuesta == true)  //caso de exito
				$gbVista->asignarDato('mensaje','trayecto eliminado con éxito');
			else
				$gbVista->asignarDato('mensaje','Error al eliminar el trayecto');
		
			//asignar la vista para mostrar mensajes, y mostrarla
			$gbVista->asignarVista("pensumMensaje");
			$gbVista->mostrar();
		}else if (PostGet::obtenerPostGet('m_formato') == "json"){
			$gbVista->asignarDato('respuesta', $respuesta);
			
			
		}else
			echo "FORMATO INVALIDO";


		$gbVista->mostrar();
	}
	
	
	
	/*	Permite eliminar una unidad curricular, recibe el código, ejecuta la acción correspondiente y muestra un mensaje con el resultado de la operación, utiliza la pantalla genérica de mensajes para dar la respuesta.
		Parámetros de entrada:
			Ninguno:
		Valores de salida:
			Ninguno.
	*/
	
	private static function  eliminarUniCurricular() {
		global $gbVista;
		
		//Obtener el código del pensum a eliminar
		$codigo = PostGet::obtenerPostGet('codigo');
		//$VARIABLE = CursoServicio::obtenerCursoPorUnidad($codigo);
		$codPensum=PostGet::obtenerPostGet('codPensum');
		$codTrayecto=PostGet::obtenerPostGet('codTrayecto');
		
		
		$gbVista->asignarDato('codPensum',$codPensum);
		$gbVista->asignarDato('codTrayecto',$codTrayecto);
		$respuesta = UniCurricularServicio::eliminarUniCurricular($codigo);
		if (PostGet::obtenerPostGet('m_formato') == "html5"){
				//procesar respuesta
			$gbVista->asignarDato('titulo','Unidad Curricular');
			if ($respuesta == true)  //caso de exito
				$gbVista->asignarDato('mensaje','unidad curricular eliminado con éxito');
			else
				$gbVista->asignarDato('mensaje','Error al eliminar la unidad curricular');
		
		}else if (PostGet::obtenerPostGet('m_formato') == "json"){
			$gbVista->asignarDato('respuesta', $respuesta);
			
			
		}else
			echo "FORMATO INVALIDO";
		$gbVista->mostrar();
		
	}
        
	
	/*	Método que permite obtener una lista de pensum según un patrón de búsqueda.
		Parámetros de entrada:
			Ninguno:
		Valores de salida:
			Ninguno.
	 */
	private static function listarPensum(){
		//obtener el patrón de búsqueda
		global $gbVista;
		$patron = PostGet::obtenerPostGet('patron');
		$patron = ($patron) ? $patron : '';
		$pensums = PensumServicio::obtenerListaPensum($patron);
		
		

		$gbVista->asignarDato('pensums',$pensums);
		$gbVista->asignarDato('patron', $patron);
		$gbVista->mostrar();	
			
	}
	
	/*	Método que permite obtener una lista de trayectos según un patrón de búsqueda.
		Parámetros de entrada:
			Ninguno:
		Valores de salida:
			Ninguno.
	*/
	private static function  listarTrayecto(){
		//obtener el patrón de búsqueda
		global $gbVista;
		$cod_pensum = PostGet::obtenerPostGet('codigo');

		$trayectos = TrayectoServicio::obtenerTrayectoPorPensum($cod_pensum);

		$gbVista->asignarDato('trayectos',$trayectos);
		$gbVista->asignarDato('pensum',$cod_pensum);

		$gbVista->mostrar();
		
	}	
	
	/*	Método que permite obtener una lista de unidades curriculares según un patrón de búsqueda.
			Parámetros de entrada:
				Ninguno:
			Valores de salida:
				Ninguno.
	 */
	private static function  listarUniCurricular(){
		global $gbVista;
		$codPensum = PostGet::obtenerPostGet('codPensum');
		$codTrayecto = PostGet::obtenerPostGet('codTrayecto');
       
		$uniCurriculares = UniCurricularServicio::obteneruniCurricularPorTrayecto($codTrayecto);

		$gbVista->asignarDato('uniCurriculares',$uniCurriculares);
		$gbVista->asignarDato('codPensum',$codPensum);
		$gbVista->asignarDato('codTrayecto',$codTrayecto);

		$gbVista->mostrar();
		
	}

 /* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
   +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
   ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/   

 	
  /* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
   +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
   ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/   
   
   

}

